﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _94运算符
{
    internal class Program
    {
        //算数运算符 + - * / % ++ --
        private static void Main1(string[] args)
        {
            // 除
            Console.WriteLine(10 / 3);//整数3
            Console.WriteLine(10f / 3f);//浮点数3.333333

            //取余  一般用来判断是否为一个数的倍速
            Console.WriteLine(10 % 3);//1
            Console.WriteLine(2 % 3);//2

            //++ 自加1
            int a = 5;
            //Console.WriteLine(a++);//5  先执行整行语句再自加
            //Console.WriteLine(a);//6
            Console.WriteLine(++a);//6  先自加再执行整行语句
            Console.WriteLine(a);//6

            int b = 6;
            int c = b-- + 2;
            Console.WriteLine(c);//8
            Console.WriteLine(b);//5
        }

        //关系运算符
        private static void Main2(string[] args)
        {
            int a = 5;
            int b = 6;
            Console.WriteLine(a == b);
            Console.WriteLine(a != b);
            Console.WriteLine(a > b);
            Console.WriteLine(a < b);
            Console.WriteLine(a >= b);
            Console.WriteLine(a <= b);

            if (a > b)
            {
                Console.WriteLine("a大于b");
            }
            else
            {
                Console.WriteLine("a小于b");
            }
        }
        //赋值运算符
        private static void Main3(string[] args)
        {
            int a = 5;//把右边的结果给左边
            int b = a;//把a盒子里的东西Copy一份给b盒子

            string s = "你好";
            string s1 = s;//把s盒子里面的地址copy一份给s1盒子

            //总结:  赋值就是复制

            int n = int.Parse(Console.ReadLine());
        }

        //赋值运算符 +=  累加,原来的值上累加一个值
        private static void Main4(string[] args)
        {
            int a = 5;
            a += 2;//在5的基础上加上2 等同于:a = a + 2;
            Console.WriteLine(a);//7
        }
        //逻辑运算符 对布尔值运算 得到的还是布尔值
        private static void Main5(string[] args)
        {
            int a = 5;
            int b = 6;
            int c = 11;
            //与,并且  同为真则为真(一假俱假)
            //Console.WriteLine(a > b && a++ + b == c);//fale
            //Console.WriteLine(a);//5

            //或 有1个位真则位真
            Console.WriteLine(a > b || a++ + b == c);//true
            Console.WriteLine(a);//6

            // !取反
            Console.WriteLine(!(a > b));//true
        }
        //位运算符
        private static void Main6(string[] args)
        {
            int a = 5;//0000 0101
            int b = 6;//0000 0110
            Console.WriteLine(a & b);//按位与,同为1则为1     0000 0100      4
            Console.WriteLine(a | b);//按位或,有一个为1则为1  0000 0111      7
            Console.WriteLine(Convert.ToString((~0), 2));//按位取反  0变1  1变0   3
            Console.WriteLine(-1 >> 2);//移位,-1往右移2位,溢出的直接丢弃,左边少了补符号位,右边补0

            Console.WriteLine(a ^ b);//异或  相同0不同为1     0000 0011

            //两个数字异或得到第三个数,这三个数任意两两异或都可以得到另外一个数
            Console.WriteLine(3 ^ 6);//5
        }
        //三元表达式
        private static void Main7(string[] args)
        {
            int score = int.Parse(Console.ReadLine());
            Console.WriteLine(score >= 60 ? "及格" : "不及格");
        }
        //三元表达式多条件判断
        private static void Main(string[] args)
        {
            int score = int.Parse(Console.ReadLine());
            string level =
                score >= 90 ? "优秀" :
                score >= 70 ? "良好" :
                score >= 60 ? "及格" :
                "不及格";
            Console.WriteLine(level);
        }
        //
    }
}